home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / util / simulare.sit / Simula 4.07 Reference / card_38092.txt < prev    next >
Text File  |  1989-05-02  |  3KB  |  58 lines

  1. -- card: 38092 from stack: in.07 Reference
  2. -- bmap block id: 0
  3. -- flags: 0000
  4. -- background id: 13647
  5. -- name: 
  6.  
  7.  
  8. -- part 1 (field)
  9. -- low flags: 00
  10. -- high flags: 0007
  11. -- rect: left=15 top=85 right=298 bottom=489
  12. -- title width / last selected line: 0
  13. -- icon id / first selected line: 0 / 0
  14. -- text alignment: 0
  15. -- font id: 20
  16. -- text size: 10
  17. -- style flags: 0
  18. -- line height: 12
  19. -- part name: 
  20.  
  21.  
  22. -- part contents for card part 1
  23. ----- text -----
  24. The SIMULA system conforms to the SIMULA standard and there are no restrictions in the compiler. Unfortunately the segmentation of the program forces some limitations on the size of Simula programs. It is our hope that in future releases of the SIMULA system we will be able to relax these restrictions.
  25.  
  26. An executable file is divided into one data segment and one or more code segments. The data segment is restricted to 32 Kbytes. All data is automatically placed in the data segment by the system. The code segments can be bigger than 32 Kbytes but there are restrictions (see below). All communication between different segments is done via a jump-table. The number of entries in this table is maximized to 4096. In Simula calls between separately compiled units and calls to the run-time system will use entries in this table.
  27.  
  28. The assembler is responsible for the partition into code segments. When it starts to assemble a new Simula block (procedure or class) it will generate a new segment if the old one is bigger than 16K.
  29.  
  30. ΓÇó The generated code for a block (sub-block, procedure or class) may not be bigger than 32 Kbytes. This will not be a very hard restriction. In a reasonably formatted program it means that a block should not be more than around 1000 source lines. The linker will issue a message if this restriction is violated.
  31.  
  32. ΓÇó The 32 Kbytes data segment gives some restrictions. The SIMULA system uses the data-segment for three different purposes:
  33.  
  34. -for local variables of the run-time system
  35. -for templates (a description of a block used by the run-time system)
  36. -for strings and floating-point numbers used in the Simula program
  37.  
  38. This is probably the most severe restriction. Depending on the program, it means that a Simula program must not be bigger than between 4000 and 10000 lines of Simula source. You can check the size of the segments by reading the load-map produeced if you specify -l to the linker (in simld command).
  39.  
  40. ΓÇó The jump-table is used for a number of internal labels in the run time system and for all entry points in the Simula program (every procedure and block has one entry point; a class has at most three entry points). This restriction has not yet been  a problem.
  41.  
  42. ΓÇó Labels which have to be exported from its segment can not have a relative address in their segment greater than 32K. The assembler tries to divide the program into segments not greater than 32 Kbytes. However if a block is greater than 16 Kbytes the whole segment can be greater than 32Kbytes. There are two different cases where this situation can cause problems.
  43.  
  44. - If a label is used in a block different from the block with the declaration and it has  a relative address greater than 32 Kbytes.
  45. - If an entrypoint after an "inner" statement has a relative address greater than 32 Kbytes.
  46.  
  47.  
  48. Other restrictions
  49.  
  50. ΓÇó the symbolic debugger is not (yet) part of the system.
  51. ΓÇó a file name may not contain blanks
  52.  
  53.  
  54.  
  55.  
  56. -- part contents for background part 2
  57. ----- text -----
  58. Segments and limitations